Library-Based Choreographic Programming
Choreographic programming promises to simplify the development of concurrent and distributed programs. In choreographic programming, instead of writing a separate program for every participant in a distributed system, the programmer describes the behavior of the entire distributed system as a single, unified program -- a choreography -- which is then compiled to individual programs that run on each node, via a compilation step called endpoint projection. This eliminates common programming errors, such as deadlocks, and unifies an otherwise disjointed set of programs programs.
Seminar: Choral
In the seminar you will explore the Choral language. Choral is an object-oriented language that compiles into Java programs. Your paper should answer the questions:
- What are choreographies? (Give and implement short example programs)
- What is knowledge of choice? How does Choral achieve it?
- When does Choral benefit from out of order execution?
- What are the challenges of reordering expressions?
- How does Ozone achieve safe out-of-order execution for Choral?
Project
Traditional approaches use a compiler to project choreographies onto different roles, the so-called 'endpoint projection'. More recent approaches promise to achieve the same static guarantees without a compilation step, by moving the endpoint projection into a software library at runtime. So far, however, only small toy examples using this technique have been presented. In this project you will develop software for a non-trivial use case using ChorLean, a choreography library written in Lean. A possible project idea is to develop an IRC-based chat system, based on an existing implementation in the compiled language Choral, but you can also bring in your own ideas.
You will evaluate the challenges of writing "real" software using library-based choreographies and compare them to compiled languages such as Choral, as well as developing standalone applications.
Pointers
- Choral Homepage
- Ozone: Fully Out-of-Order Choreographies
- Choral: Object-oriented Choreographic Programming
- Real-World Choreographic Programming: Full-Duplex Asynchrony and Interoperability
- HasChor: Functional Choreographic Programming for All
- MultiChor: Census Polymorphic Choreographic Programming with Multiply Located Values
- ChoRus Website
- Portable, Efficient, and Practical Library-Level Choreographic Programming